/*
 * PKL 51 GUNUNG KIDUL
 * Subseksie DATA ENTRY + CAPI
 */
package pkl51.model;

import pkl51.entity.Blok3;
import pkl51.entity.BlokSensus;
import pkl51.entity.Mahasiswa;
import pkl51.entity.Pengawasan;
import pkl51.entity.Ruta;
import pkl51.error.EntityException;
import pkl51.model.event.HomeListener;
import pkl51.service.Blok3Dao;
import pkl51.service.BlokSensusDao;
import pkl51.service.MahasiswaDao;
import pkl51.service.PengawasanDao;
import pkl51.service.RutaDao;
import pkl51.service.impl.Blok3DaoImpl;
import pkl51.service.impl.BlokSensusDaoImpl;
import pkl51.service.impl.MahasiswaDaoImpl;
import pkl51.service.impl.PengawasanlDaoImpl;
import pkl51.service.impl.RutaDaoImpl;
import pkl51.view.Home;

/**
 *
 * @author FITRI ANDRI ASTUTI
 */
public class HomeModel {
    private String nama_pencacah;
    private String nim_pencacah;
    private String nama_kortim;
    private String nim_kortim;
    private String NKS;
    private int jmlSampel;
    private HomeListener listener;
    private MahasiswaModel mahasiswaModel;
    private static HomeModel instance;
    
    public static HomeModel getInstance(){
        if(instance==null){
            instance = new HomeModel();
        }
        return instance;
    }

    public HomeModel() {
    }

    public void setForDB(String NKS,String nama_pencacah, String nim_pencacah, String nama_kortim, String nim_kortim) {
        this.NKS=NKS;
        this.nama_pencacah = nama_pencacah;
        this.nim_pencacah = nim_pencacah;
        this.nama_kortim = nama_kortim;
        this.nim_kortim = nim_kortim;
    }
    
    public void setNamaPencacah() throws EntityException{
        MahasiswaDao dao = new MahasiswaDaoImpl();
        Mahasiswa mhs = dao.getMahasiswaByNim(nim_pencacah);
        setNama_pencacah(mhs.getNama());
    }
    
    public void setNamaKortim() throws EntityException{
        PengawasanDao dao = new PengawasanlDaoImpl();
        Pengawasan pengawasan = dao.getPengawasanByNim_Pencacah(nim_pencacah);
        setNim_kortim(pengawasan.getNim_kortim());
        
        MahasiswaDao mahasiswaDao = new MahasiswaDaoImpl();
        Mahasiswa kortim = mahasiswaDao.getMahasiswaByNim(pengawasan.getNim_kortim());
        setNama_kortim(kortim.getNama());
    }
    
    
   public void setListener(HomeListener listener) {
        this.listener = listener;
    }


    public void setMahasiswaModel(MahasiswaModel mahasiswaModel) throws EntityException {
        this.mahasiswaModel = mahasiswaModel;
        nim_pencacah = mahasiswaModel.getNim();
        nama_pencacah = mahasiswaModel.getNama();
        setNamaPencacah();
        setNamaKortim();
        fireOnChange(this);
    }
    
    public void getHome() throws EntityException{

        RutaDao rutaDao = new RutaDaoImpl();
        Ruta ruta = rutaDao.getRutaByNKS(NKS);
        setNKS(ruta.getNKS());

        PengawasanDao dao = new PengawasanlDaoImpl();
        Pengawasan pengawasan = dao.getPengawasanByNim_Pencacah(nim_pencacah);
        setNim_kortim(pengawasan.getNim_kortim());
        
        MahasiswaDao mahasiswaDao = new MahasiswaDaoImpl();
        Mahasiswa kortim = mahasiswaDao.getMahasiswaByNim(pengawasan.getNim_kortim());
        setNama_kortim(kortim.getNama());
        
        setNamaPencacah();
        setNamaKortim();
    }

    public String getNKS() {
        return NKS;
    }

    public int getJmlSampel() {
        return jmlSampel;
    }

    public String getNama_kortim() {
        return nama_kortim;
    }

    public String getNama_pencacah() {
        return nama_pencacah;
    }

    public String getNim_kortim() {
        return nim_kortim;
    }

    public String getNim_pencacah() {
        return nim_pencacah;
    }

    public void setNKS(String NKS) {
        this.NKS = NKS;
        fireOnChange(this);
    }

    public void setJmlSampel(int jmlSampel) {
        this.jmlSampel = jmlSampel;
        fireOnChange(this);
    }

    public void setNama_kortim(String nama_kortim) throws EntityException {
        this.nama_kortim = nama_kortim;
        setNamaKortim();
        fireOnChange(this);
    }

    public void setNama_pencacah(String nama_pencacah) throws EntityException {
        this.nama_pencacah = nama_pencacah;
        setNamaPencacah();
        fireOnChange(this);
    }

    public void setNim_kortim(String nim_kortim){
        this.nim_kortim = nim_kortim;
        fireOnChange(this);
    }

    public void setNim_pencacah(String nim_pencacah) {
        this.nim_pencacah = nim_pencacah;
        fireOnChange(this);
    }
    
    protected void fireOnChange(HomeModel model) {
        if (listener != null) {
            listener.onChange(this);
        }
    }

}
